//
//  main.c
//  文件管理
//
//  Created by 解楚豪 on 2018/7/18.
//  Copyright © 2018年 解楚豪. All rights reserved.
//

#include <stdio.h>
#include <stdlib.h>

struct Student {
    char name[20];
    int age;
    int num;
    float score;
}body[10],bodt[10],*pa,*pb;

int copyFile(char *readFile,char *writeFile);

int main(int argc, const char * argv[]) {
    // insert code here...
//    printf("Hello, World!\n");
//    FILE *file = fopen("/Users/mac/Desktop/本科 计算机与科学", "a+");
//    if(file == NULL){
//        printf("错误,打不开\n");
//        char a = getchar();
//        printf("即将推出:%c",a);
//        exit(1);
//    }
//    pa = body;
//    pb = bodt;
//
//    printf("成功打开\n");
//    char first[23];
//    while ((first = fgetc(file)) != EOF) {
//        putchar(first);
//    }
//    fgets(first, 23, file);
//    printf("%s", first);
//    printf("\n");
    

//    char write;
//    while ((write = getchar()) != '\n') {
//        fputc(write, file);
//    }
//    char write[20];
//    scanf("%s",write);
//    fputs(write, file);
//
//
//    if (ferror(file)){
//        printf("读取失败\n");
//    }else{
//        printf("读取成功\n");
//    }
    
    
//    for (int i=0; i<10; i++,pa++) {
//        scanf("%s %d %d %f",pa->name,&pa->age,&pa->num,&pa->score);
//    }
//    pa = body;
//
//    for (int i=0; i<10; i++,pa++) {
//        fprintf(file, "%s %d %d %f\n",pa->name,pa->age,pa->num,pa->score);
//    }
//    rewind(file);
    
//    for (int i=0; i<10; i++,pb++) {
//        fscanf(file, "%s %d %d %f\n",pb->name,&pb->age,&pb->num,&pb->score);
//    }
//    pb = bodt;
//    for(int i=0; i<10; i++,pb++){
//        printf("%s  %d  %d  %f\n", pb->name, pb->num, pb->age, pb->score);
//    }
//
//
//
//
//    int close = fclose(file);
//    if (close != 0){
//        printf("关闭失败\n");
//    }else{
//        printf("关闭成功\n");
//    }

    if (copyFile("/Users/mac/Desktop/本科 计算机与科学", "/Users/mac/Desktop/本科")) {
        printf("文件复制成功\n");
    }
    
    return 0;
}

int copyFile(char *readFile,char *writeFile){
    FILE *fpRead;//要复制的文件
    FILE *fpWrite;//复制后的文件
    int bufferLen = 1024 * 4;//缓存区
    char *buffer = (char *)malloc(bufferLen);
    size_t readCount;
    if ((fpRead = fopen(readFile, "rb+")) == NULL || (fpWrite = fopen(writeFile, "wb+")) == NULL) {
        printf("打开失败");
        getchar();
        exit(1);
    }
    while ((readCount = fread(buffer, 1, bufferLen, fpRead)) > 0) {
        fwrite(buffer, readCount, 1, fpWrite);
    }
    
    free(buffer);
    fclose(fpRead);
    fclose(fpWrite);
    return 1;
}

long fsize(FILE *file){
    long n;
    fpos_t fpos;
    fgetpos(file, &fpos);
    fseek(file, 0, SEEK_END);
    n = ftell(file);
    fsetpos(file, &fpos);
    return n;
}
